package co.gov.mintic.inmueblesdisponibles.android;

import java.util.HashMap;

import android.app.Activity;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemSelectedListener;
import android.widget.Spinner;
import co.gov.mintic.inmueblesdisponibles.util.Utilidades;
import co.gov.mintic.inmueblesdisponibles.vo.Ciudad;
import co.gov.mintic.inmueblesdisponibles.vo.Departamento;

/**
 * Clase encargada de las modificaciones a los filtros cuando se selecciona una ciudad
 * @author Benjamin
 *
 */
public class CiudadesListener implements OnItemSelectedListener {

	private String valorMaximo;
	
	private Spinner spDptos;

	private Spinner spCiudades;
	
	private Spinner spEstratos;

	private Spinner spTiposInmuebles;
	
	private Activity activity;
	
	private Object objEstratos[];
	
	private Object objTipoInm[];

	private HashMap<String, Departamento> departamentos;

	@Override
	public void onItemSelected(AdapterView<?> arg0, View arg1, int arg2, long arg3) {
		// TODO Auto-generated method stub
		String strDptoSel = (String) spDptos.getSelectedItem();
		Departamento dptoSel = departamentos.get(strDptoSel);
		if (dptoSel != null && !strDptoSel.equals("Todos los Departamentos") ) {
			String strCiudadSel = (String) spCiudades.getSelectedItem();
			if (strCiudadSel != null && !strCiudadSel.equals("Todas las ciudades")) {
				Ciudad ciudad = dptoSel.getCiudad(strCiudadSel);
				Utilidades.llenarSpinner(activity, spEstratos, ciudad.getEstratos().values().toArray(), "Cualquier Estrato");
				Utilidades.llenarSpinner(activity, spTiposInmuebles, ciudad.getTiposinmuebles().values().toArray(), "Cualquier Tipo de Inmueble");
			} else {
				Utilidades.llenarSpinner(activity, spEstratos, dptoSel.getEstratos().values().toArray(), "Cualquier Estrato");
				Utilidades.llenarSpinner(activity, spTiposInmuebles, dptoSel.getTiposinmuebles().values().toArray(), "Cualquier Tipo de Inmueble");
			}
		} else {
			Utilidades.llenarSpinner(activity, spEstratos, objEstratos, "Cualquier Estrato");
			Utilidades.llenarSpinner(activity, spTiposInmuebles, objTipoInm, "Cualquier Tipo de Inmueble");
		}
	}

	@Override
	public void onNothingSelected(AdapterView<?> arg0) {
		// TODO Auto-generated method stub

	}

	public Spinner getSpDptos() {
		return spDptos;
	}

	public void setSpDptos(Spinner spDptos) {
		this.spDptos = spDptos;
	}

	public Spinner getSpCiudades() {
		return spCiudades;
	}

	public void setSpCiudades(Spinner spCiudades) {
		this.spCiudades = spCiudades;
	}

	public Activity getActivity() {
		return activity;
	}

	public void setActivity(Activity activity) {
		this.activity = activity;
	}

	public HashMap<String, Departamento> getDepartamentos() {
		return departamentos;
	}

	public void setDepartamentos(HashMap<String, Departamento> departamentos) {
		this.departamentos = departamentos;
	}

	/**
	 * @return the spEstratos
	 */
	public Spinner getSpEstratos() {
		return spEstratos;
	}

	/**
	 * @param spEstratos the spEstratos to set
	 */
	public void setSpEstratos(Spinner spEstratos) {
		this.spEstratos = spEstratos;
	}

	/**
	 * @return the spTiposInmuebles
	 */
	public Spinner getSpTiposInmuebles() {
		return spTiposInmuebles;
	}

	/**
	 * @param spTiposInmuebles the spTiposInmuebles to set
	 */
	public void setSpTiposInmuebles(Spinner spTiposInmuebles) {
		this.spTiposInmuebles = spTiposInmuebles;
	}

	/**
	 * @return the objEstratos
	 */
	public Object[] getObjEstratos() {
		return objEstratos;
	}

	/**
	 * @param objEstratos the objEstratos to set
	 */
	public void setObjEstratos(Object[] objEstratos) {
		this.objEstratos = objEstratos;
	}

	/**
	 * @return the objTipoInm
	 */
	public Object[] getObjTipoInm() {
		return objTipoInm;
	}

	/**
	 * @param objTipoInm the objTipoInm to set
	 */
	public void setObjTipoInm(Object[] objTipoInm) {
		this.objTipoInm = objTipoInm;
	}

	/**
	 * @return the valorMaximo
	 */
	public String getValorMaximo() {
		return valorMaximo;
	}

	/**
	 * @param valorMaximo the valorMaximo to set
	 */
	public void setValorMaximo(String valorMaximo) {
		this.valorMaximo = valorMaximo;
	}

	
}
